package pe.com.bbva.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.hibernate.SessionFactory;

import pe.com.bbva.carga.bo.impl.LoadClassTargpsBOImpl;
import pe.com.bbva.encriptacion.BlowFish;
import pe.com.bbva.mantenimiento.bo.KitMaterialBO;
import pe.com.bbva.mantenimiento.bo.impl.KitMaterialBOImpl;
import pe.com.bbva.mantenimiento.dao.KitMaterialDAO;
import pe.com.bbva.mantenimiento.dao.impl.KitMaterialDAOImpl;
import pe.com.bbva.mantenimiento.domain.KitMaterial;
import pe.com.stefanini.core.exceptions.BOException;
import pe.com.stefanini.core.exceptions.DAOException;
import pe.com.stefanini.core.util.FechaUtil;
import pe.com.stefanini.core.util.StringUtil;

public class Test {
	/**public static void main(String[] args) { 
		System.
		out.println("sd"); 
		try { 
		SendEMail.sendBodyHtml(
		"118.180.25.77","25", "viktor182@yahoo.es", "viktor182@yahoo.es", "es una prueba", "ES UNA PRUEBA FYI"); 
		} 
		catch (Exception e) { 
		// TODO Auto-generated catch block 
		e.printStackTrace();
		}
		}
	 * @throws BOException 
	 * @throws DAOException **/
	
	public static void main(String[] args) throws BOException, DAOException { 
		FechaUtil.formatFecha(FechaUtil.getFechaActualDate(),"HH:mm:ss");
		System.out.println(FechaUtil.formatFecha(FechaUtil.getFechaActualDate(),"HH:mm:ss"));
		//crearArchivoEncriptado("SIN_ENC1-SEGURO-GPS-22102013.txt", "ENC_1-SEGURO-GPS-22102013.txt");
		//crearArchivoEncriptado("2-TOTAL-GPS-14112013.txt", "DES_2-TOTAL-GPS-14112013.txt");

//		String card="1";
//		for (int i = 0; i < 20; i++) {
//				
//			String result = addGuion("123456789012345678");
//			System.out.println(result);
//		}
		
//		updateVigenciaKitMaterial();
		
	}
	
	public static void updateVigenciaKitMaterial() throws BOException, DAOException {

		try {
			 
			KitMaterialDAO kitMaterialBO  = new KitMaterialDAOImpl(null);
			Date today = new Date();
			Long fechaActualNumero = today.getTime();
			String fechaActual = FechaUtil
			.formatFechaActual(FechaUtil.DDMMYYYY);
			KitMaterial findKit = new KitMaterial();
			findKit.setEstado(Constantes.VAL_ACTIVO);
			List<KitMaterial> listaKitMaterialActivo= kitMaterialBO.findKitMateriales(findKit);

//			if (!listaKitMaterialActivo.isEmpty()) {
//				for (KitMaterial kitMaterialVigente : listaKitMaterialActivo) {
//					if(kitMaterialVigente.getFechaFin() != null){
//						Long fechaVencimiento = kitMaterialVigente
//								.getFechaFin().getTime();
//						int nroDias = (int) Math.floor((fechaVencimiento
//								- fechaActualNumero + 1)
//								/ (1000 * 60 * 60 * 24));
//						if (nroDias <= 0) {
//							kitMaterialVigente.setEstado(Constantes.VAL_INACTIVO);
//							kitMaterialBO.save(kitMaterialVigente);
//							
//						}
//					}
//					if(kitMaterialVigente.getFechaInicio() != null){
//						String fechaApertura = FechaUtil.formatFecha(
//								kitMaterialVigente.getFechaInicio(),
//								FechaUtil.DDMMYYYY);
//						if (fechaApertura.equals(fechaActual)) {
//							kitMaterialVigente.setEstado(Constantes.VAL_INACTIVO);
//							kitMaterialBO.save(kitMaterialVigente);
//							
//						}
//					}
//				}
//
//			}
			
		} catch (Exception e) {
		
		}
	}
	
	public static void crearArchivoEncriptado(String nombreArchivoLectura,
			String nombreArchivoEncriptado) throws BOException {
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		File archivoOut = null;
		BufferedWriter bw = null;
		String rutaCompletaLectura = "";
		String rutaCompletaEncriptado = "";
		try {
			
			String ruta = "C:\\mnt\\compartido\\targps\\load";
			String encoding = "Cp1252";
			rutaCompletaLectura = ruta + File.separator + nombreArchivoLectura;
			rutaCompletaEncriptado = ruta + File.separator
					+ nombreArchivoEncriptado;
			archivoOut = new File(rutaCompletaEncriptado);
			if (archivoOut != null && archivoOut.exists()) {// Eliminando el
															// archivo antes de
															// crearlo con nueva
															// data
				archivoOut.delete();
			}
			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
					new FileOutputStream(rutaCompletaEncriptado), encoding);
			bw = new BufferedWriter(outputStreamWriter);

				String saltoDeLinea = Constantes.SALTO_LINEA_WIN;

			bw = cargarArchivoEstampacion(rutaCompletaLectura, bw,
					saltoDeLinea, parametros);
			bw.close();
			System.out.println("----Termino archivo auxiliar para ESTAMPACION ENCRIPTADO");
		} catch (FileNotFoundException e) {
			System.out.println(StringUtil.getStackTrace(e));
			throw new BOException(e);
		} catch (IOException e) {
			System.out.println(StringUtil.getStackTrace(e));
			throw new BOException(e);
		} catch (Exception ex) {
			System.out.println(StringUtil.getStackTrace(ex));
			throw new BOException(ex);
		} finally {
			try {
				if (archivoOut != null && archivoOut.exists() && bw == null)
					archivoOut.delete();
			} catch (Exception e) {
				System.out.println(StringUtil.getStackTrace(e));
				throw new BOException(e);
			}
		}
	}
	
	public static BufferedWriter cargarArchivoEstampacion(String rutaLectura,
			BufferedWriter bw, String saltoDeLinea,
			HashMap<String, Object> parametros) throws IOException {
		String texto = "";
		String clave = "BBVAENCRIPTACION";
		try {
			FileReader inputFile = new FileReader(rutaLectura);// rutaLectura
			BufferedReader bufferReader = new BufferedReader(inputFile);
			String line;
			int i = 0;
			while ((line = bufferReader.readLine()) != null) {
				texto="";
				if (i == 0) {
					texto += BlowFish.encriptar(line, clave);
					if (texto.length() != 0) {
						bw.write(texto);
					}
				} else {
					texto += saltoDeLinea;
					texto += BlowFish.encriptar(line, clave);
					if (texto.length() != 0) {
						bw.write(texto);
					}
				}
				i++;
			}
			bufferReader.close();
		} catch (Exception e) {
			System.out.println(StringUtil.getStackTrace(e));
		}
		return bw;
	}
	
	public static String deleteMonth(){
		String fechaPath=null;
		Calendar cal=Calendar.getInstance();
		Date fechActual=new Date();
		cal.setTime(fechActual);
		cal.add(Calendar.MONTH,-1);
		Date date = cal.getTime(); 
		fechaPath=FechaUtil.formatFecha(date,FechaUtil.YYYYMMDD);
		return fechaPath;
	}
	
	public static void deleteFiles(String path,String fechaPath){
		File file=new File(path);
		String nameFile=null;
		int indice=0;
				
				File[] listFileDelete=file.listFiles();
				
				 for(int i = 0; i < listFileDelete.length; i++) {
					 if(listFileDelete[i].isFile()){
						 nameFile=listFileDelete[i].getName();
						 indice=nameFile.indexOf(fechaPath);
						 if(indice!=-1){
							 if(listFileDelete[i].delete()){
								 System.out.println("Se elimino correctamente");
							 }else{
								 System.out.println("Error al eliminar el archivo"); 
							 }
						 }
					 }
				 }
		}
	public static String addGuion(String cardNumber)	{
	    String result = "";
	    int len = cardNumber.length();
	    int nDigits = 0;
	    for (int i = 0; i < len; i++){
	        result = result + cardNumber.charAt(i);                 
	        nDigits++;                                          
	        if (((nDigits % 4) == 0) && (i > 0) && nDigits<len){
	            result = result+"-";
	        }
	    }
	    return (result);
	}
}
